(cl-text Connector1 (cl-comment "Connector [1] Roles cannot be played by datatypes") (not (exists (ce dt ro) (and (cbuml:DataType dt) (buml:Property ro) (buml:type ro dt) (cbuml:role ce ro) ) ) ) ) (cl-text Connector2 (cl-comment "Connector [2] Connector between two elements, both must be passive or both should be active") (forall (c ce1 ce2 p1 p2 t1 t2) (if (and (cbuml:Connector c) (cbuml:kind c cbuml:assembly) (cbuml:end c ce1) (cbuml:end c ce2) (cbuml:role ce1 p1) (cbuml:role ce2 p2) (buml:type p1 t1) (buml:type p2 t2) ) (and (if (cbuml:isActive t1 form:true) (cbuml:isActive t2 form:true)) (if (not (cbuml:isActive t1 form:true)) (not (cbuml:isActive t2 form:true))) ) ) ) ) (cl-text Connector3 (cl-comment "Connector [3] Port not is behavior, owner a passive class, should be always multiplicity one otherwise it is need multiple proxies (complicating the automatic transformation).") (forall (c p ce) (if (and (buml:Class c) (cbuml:Port p) (not (cbuml:isBehavior p form:true)) (buml:ownedAttribute c p) (not (cbuml:isActive c form:true)) (cbuml:role ce p) ) (and (cbuml:lower ce form:1) (cbuml:upper ce form:1) ) ) ) ) (cl-text Connector4 (cl-comment "Connector [4] Assembly using two ports means inverse direction (conjugated) and navegability (type is covered byother rules)") (forall (c ce1 ce2 p1 p2) (if (and (cbuml:Connector c) (cbuml:kind c cbuml:assembly) (cbuml:end c ce1) (cbuml:end c ce2) (cbuml:role ce1 p1) (cbuml:role ce2 p2) (cbuml:Port p2) (cbuml:Port p1) (form:port-related p1 p2) ) (and (iff (cbuml:isConjugated p1 form:true) (not (cbuml:isConjugated p2 form:true)))) ) ) ) (cl-text Connector5 (cl-comment "Connector [5] Delegation between two ports, implies common subtype and same value for conjugation and association") (forall (c ce1 ce2 p1 p2) (if (and (cbuml:Connector c) (cbuml:kind c cbuml:delegation) (cbuml:end c ce1) (cbuml:end c ce2) (cbuml:role ce1 p1) (cbuml:role ce2 p2) (cbuml:Port p2) (cbuml:Port p1) (form:port-related p1 p2) ) (and (iff (cbuml:isConjugated p1 form:true) (cbuml:isConjugated p2 form:true)) ) ) ) ) (cl-text Connector6 (cl-comment "Connector [6] NOT IMPLEMENTED - Assembly between two parts or references implies association with the same multiplicity and type, navegability does not matter - connector in this case does not define a direction - type does not matter") )